package com.cango.qutz.web.auth.menu.service;


import java.util.List;

import com.cango.qutz.web.entity.MenuEntity;
import com.cango.framework.base.pagination.PageInfo;
import com.cango.framework.base.pagination.PaginationResult;

/**
 * <p>ClassName: IMenuService</p>
 * <p>Description: 系统菜单Service接口</p>
 * <p>Author: weih</p>
 * <p>Date: 2015-03-20</p>
 */
public interface IMenuService {
    /**
     * <p>Description: 插入系统菜单</p>
     * @param menu 系统菜单对象
     * @return int
     */
    int insert(MenuEntity menu);
    
    /**
     * <p>Description: 更新系统菜单</p>
     * @param menu 系统菜单对象
     * @return int
     */
    int update(MenuEntity menu);
    
    /**
     * <p>Description: 删除系统菜单</p>
     * @param menu 系统菜单对象
     * @return int
     */
    int delete(MenuEntity menu);
    
    /**
     * <p>Description: 根据系统菜单id查询系统菜单记录</p>
     * @param menuCode 系统菜单组件
     * @return 系统菜单对象
     */
    MenuEntity queryObjectById(String menuCode);
    
    /**
     * <p>Description: 查询系统菜单记录列表</p>
     * @param param 系统菜单对象
     * @return 系统菜单记录列表
     */
    List<MenuEntity> queryList(Object param);
    
    
    
    /**
     * <p>Description: 分页查询系统菜单记录列表</p>
     * @param param 系统菜单对象
     * @param pageinfo 分页对象
     * @return 分页记录
     */
    PaginationResult<MenuEntity> queryListByPage(MenuEntity param, PageInfo pageinfo);
    
    /**
     * 功能描述: <br>
     * 〈功能详细描述〉
     *根据父Id查找子菜单
     * @param param (object对象)
     * @return list
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<MenuEntity> queryListByParentCode(Object param);
    
    
    /**
     * 功能描述: <br>
     * 验证菜单代码的唯一性
     *
     * @param menuCode 菜单代码
     * @return 结果
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    boolean validMenuCode(String menuCode);
    
    /**
     * 功能描述: <br>
     * 验证按钮代码的唯一性
     *
     * @param buttonCode 按钮代码
     * @return 结果
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    boolean validButtonCode(String buttonCode);

}
